package com.qzsoft.system.modules.zhjdsysdept.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qzsoft.system.modules.zhjdsysdept.dto.ZhjdSysDeptTreeDto;
import com.qzsoft.system.modules.zhjdsysdept.entity.ZhjdSysDeptEntity;

/**
 * @ClassName ZhjdSysDeptService
 * @Description 机构管理业务接口
 * @author linhuawei
 * @since 2021-12-01
 */
public interface ZhjdSysDeptService extends IService<ZhjdSysDeptEntity> {

    /**
     * @Title treeAll
     * @Description 组织机构、养护基地树
     * @return 组织机构、养护基地树
     */
    List<ZhjdSysDeptTreeDto> treeAll();

    /******************************** 组织结构功能 开始 **********************************/

    /**
     * @Title treeDept
     * @Description 获取机构树
     * @return 机构树
     */
    List<ZhjdSysDeptTreeDto> treeDept();

    /**
     * @Title listDeptByPid
     * @Description 根据父节点主键获取机构列表
     * @param pid 父节点主键
     * @return 机构列表
     */
    List<ZhjdSysDeptEntity> listDeptByPid(String pid);

    /**
     * @Title findDept
     * @Description 查询组织机构信息
     * @param pkId 组织机构主键
     * @return 组织机构信息
     */
    ZhjdSysDeptEntity findDept(String pkId);

    /**
     * @Title saveDept
     * @Description 添加组织机构信息
     * @param entity 组织机构信息
     */
    void saveDept(ZhjdSysDeptEntity entity);

    /**
     * @Title updateDept
     * @Description 更新组织机构信息
     * @param entity 组织机构信息
     */
    void updateDept(ZhjdSysDeptEntity entity);

    /**
     * @Title sortDept
     * @Description 机构排序
     * @param pkId1 机构主键
     * @param pkId2 机构主键
     */
    void sortDept(String pkId1, String pkId2);

    /**
     * @Title deleteDept
     * @Description 删除组织机构
     * @param pkId 机构主键
     */
    void deleteDept(String pkId);

    /******************************** 组织结构功能 结束 **********************************/

    /******************************** 养护基地功能 开始 **********************************/

    /**
     * @Title pageForBase
     * @Description 获取养护基地分页列表
     * @param params 查询条件
     * @return 养护基地分页列表
     */
    IPage<ZhjdSysDeptEntity> pageForBase(Map<String, Object> params);

    /**
     * @Title listForBase
     * @Description 获取养护基地列表
     * @return 养护基地列表
     */
    List<ZhjdSysDeptEntity> listForBase(Map<String, Object> params);

    /**
     * @Title getAllBase
     * @Description 获取所有基地列表
     * @return 基地列表
     */
    List<ZhjdSysDeptEntity> getAllBase();

    /**
     * @Title getBaseByCode
     * @Description 根据编号获取基地信息
     * @param baseCode 基地编号
     * @return 基地信息
     */
    ZhjdSysDeptEntity getBaseByCode(String baseCode);

    /**
     * @Title findBase
     * @Description 查询养护基地信息
     * @param pkId 养护基地主键
     * @return 养护基地信息
     */
    ZhjdSysDeptEntity findBase(String pkId);

    /**
     * @Title saveBase
     * @Description 添加养护基地信息
     * @param entity 养护基地信息
     */
    void saveBase(ZhjdSysDeptEntity entity);

    /**
     * @Title updateBase
     * @Description 更新养护基地信息
     * @param entity 养护基地信息
     */
    void updateBase(ZhjdSysDeptEntity entity);

    /**
     * @Title deleteBase
     * @Description 删除养护基地
     * @param pkId 基地主键
     */
    void deleteBase(String pkId);

    /******************************** 养护基地功能 结束 **********************************/
}